<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <script src="./vue.js"></script>
</head>
<body>
  <div id="app">
    姓：<input type="text" v-model="xing">
    名：<input type="text" v-model="ming">
    姓名：<input type="text" v-model="username">
  </div>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        xing: '',
        ming: '',
        username: ''
      },
      // watch是监听器，只要数据被修改了就会重新渲染
      // computed有依赖缓存
      // computed一般是依赖某个属性得到一个新的值
      // watch一般用来监听某个值的变化然后进行一些操作，可能并不需要得到新的值
      watch: {
        xing (newV, oldV) {
          // 当data里的xing字段发生变化的时候就会走这个方法
          // newV是修改之后的最新的值, oldV是修改之前的旧值
          this.username = newV + this.ming
        },
        ming (newV, oldV) {
          this.username = this.xing + newV
        },
        username (newV, oldV) {
          this.xing = newV.slice(0, 1)
          this.ming = newV.slice(1)
        }
      }
    })
  </script>
</body>
</html>
